package com.deyuanyun.pic.settings.mapper.prvlg;

import com.deyuanyun.pic.settings.domain.prvlg.Menu;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface MenuMapper {
    int deleteByPrimaryKey(String id);

    int insert(Menu record);

    int insertSelective(Menu record);

    Menu selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(Menu record);

    int updateByPrimaryKey(Menu record);

    /**
     * 根据根据菜单名称 查询 对应菜号 查询 对应菜
     *   如果参数 menuId == null，查询出所有数据
     *
     * @param menuName 功能菜单名称
     * @return
     */
    Page<Menu> queryMenuListByName(@Param("menuName") String menuName);

    /**
     * 查询所有的子节点菜单 根据当前用户的权限
     *
     * @param userId 用户编号
     * @return
     * @throws Exception
     */
    List<Menu> queryMenuList(String userId);

    /**
     * 查询所有的子节点菜单 根据当前父节点 和用户权限
     *
     * @param userId 用户编号
     * @param parentId 菜单父节点
     * @return
     * @throws Exception
     */
    List<Menu> queryAllSubLevelMenu(String userId, String parentId);

    /**
     * 查询同级的菜单 根据当前父节点 和用户权限
     *
     * @param userId 用户编号
     * @param parentId 菜单父节点
     * @return
     * @throws Exception
     */
    List<Menu> querySameLevelMenu(@Param("userId") String userId, @Param("parentId") String parentId);

    /**
     * 查询所有该角色可以授权的菜单
     *
     * @return
     */
    List<Menu> queryMenuAll(@Param("roleId") String roleId);
}